<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=
    , initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //武器仓库初始列表
        let ObjArr = [
            {
                uname: '冲锋枪',
                uNum: 500
            },
            {
                uname: '手榴弹',
                uNum: 300
            },
            {
                uname: '驳壳枪',
                uNum: 300
            },
            {
                uname: '卡宾枪',
                uNum: 500
            },
            {
                uname: '手枪',
                uNum: 300
            },
            {
                uname: '机关枪',
                uNum: 500
            },

        ]

        //新增武器类
        class Wea {
            constructor(weaC, weaN) {
                this.uname = weaC
                this.uNum = weaN
            }
        }

        //调用武器仓库主函数
        weapon()
        //用户输入选择不能为空的操作
        function outUserCho(str) {
            let cho = prompt('系统提示:\n' + str)
            while (!cho) {
                cho = prompt('输入不能为空哦!!!!' + '\n' + str)
            }
            return cho
        }

        //获取用户选择模板字符串
        function getUserChose() {
            let msgStr = `欢迎来到迷你武器仓库，请输入您要进行的操作:\n`
            msgStr += `1.新增武器种类\n2.删除武器种类\n3.追加已有武器数量\n4.删除已有武器数量\n5.显示武器仓库列表\n`
            msgStr += `6.退出`
            return outUserCho(msgStr)
        }
        //武器仓库主函数
        function weapon() {
            let flag = true
            while (flag) {
                //获取用户选择函数
                let n = getUserChose()
                switch (parseInt(n)) {
                    case 1:
                        //用户新增武器种类函数
                        addWeaponClass()
                        break
                    case 2:
                        //用户删除武器种类函数
                        delWeaponClass()
                        break
                    case 3:
                        //用户新增已有武器数量函数
                        addWeaponNum()
                        break
                    case 4:
                        //用户删除已有武器数量函数
                        delWeaponNum()
                        break
                    case 5:
                        //用户选择展示武器列表函数
                        alert(showWeaponList())
                        break
                    case 6:
                        //用户选择退出函数
                        flag = false
                        break
                }

            }

        }


        //用户新增武器种类函数
        function addWeaponClass() {
            let weaClass = outUserCho('请输入需要新增武器种类')
            let weaNum = outUserCho('请输入需要新增武器数量')
            //new出一个武器对象
            let weaobj = new Wea(weaClass, weaNum)
            ObjArr.push(weaobj)
            if (!confirm(`新增【${weaClass}】【${weaNum}】个成功，是否显示仓库列表?`)) return
            alert(showWeaponList())
        }
        //用户删除武器种类函数
        function delWeaponClass() {
            //需要删除武器下标
            let weaIndex = outUserCho(`请选择需要删除的武器序号:\n${showWeaponList()}`)
            let weaName = ObjArr[weaIndex].uname
            if (!confirm(`您确定要删除【${weaName}】吗？`)) return
            ObjArr.splice(weaIndex, 1)
            if (!confirm(`【${weaName}】删除成功！，是否展示仓库列表？`)) return
            alert(showWeaponList())
        }
        //用户新增已有武器数量函数
        function addWeaponNum() {
            let addWeaIndex = outUserCho(`请选择需要增加数量的武器种类序号：\n ${showWeaponList()}`)
            //新增武器数量
            let addWeaNum = outUserCho(`请输入新增【${ObjArr[addWeaIndex].uname}】的数量`)
            //该武器原有数量
            let targetWeaNum = +ObjArr[addWeaIndex].uNum
            //新增后该武器数量
            targetWeaNum += +addWeaNum
            ObjArr[addWeaIndex].uNum = targetWeaNum
            if (!confirm(`添加【${ObjArr[addWeaIndex].uname}】【${addWeaNum}】个成功！，现有库存【${targetWeaNum}】个，是否显示仓库列表？`)) return
            alert(showWeaponList())
        }
        //用户删除已有武器数量函数
        function delWeaponNum() {
            let delWeaIndex = outUserCho(`请选择需要删除数量的武器种类序号：\n ${showWeaponList()}`)
            //删除武器数量
            let delWeaNum = outUserCho(`请输入删除【${ObjArr[delWeaIndex].uname}】的数量`)
            //该武器原有数量
            let targetWeaNum = +ObjArr[delWeaIndex].uNum
            //删除后该武器数量
            if (targetWeaNum >= delWeaNum) {
                targetWeaNum -= +delWeaNum
                ObjArr[delWeaIndex].uNum = targetWeaNum
                if (!confirm(`删除【${ObjArr[delWeaIndex].uname}】【${delWeaNum}】个成功！，现有库存【${targetWeaNum}】个，是否显示仓库列表？`)) return
                alert(showWeaponList())
            } else {
                alert(`对不起,【${ObjArr[delWeaIndex].uname}】的库存数量仅为【${targetWeaNum}】,删除失败!`)
            }
        }
        //显示武器仓库列表
        function showWeaponList() {
            let str = '现有武器清单预览:\n'
            for (let i in ObjArr) {
                str += `${i}. 【${ObjArr[i].uname}】的数量为【${ObjArr[i].uNum}】\n`
            }
            return str
        }

    </script>
</body>

</html>